package edu.gdut.thesissys.vo;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * GraduationSchedule entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "graduation_schedule", catalog = "gdutmis")
public class GraduationSchedule extends BaseVo implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3009857060632614279L;
	// Fields

	private Integer graduationScheduleId;
	private Major major;
	private String graduationGrade;
	private Date paperTitleDate;
	private Date doubleChooseStartDate;
	private Date doubleFirstChooseEndDate;
	private Date doubleChooseEndDate;
	private Date choosePapetTitleDate;
	private Date taskBookStartDate;
	private Date taskBookEndDate;
	private Date midCheckDate;
	private Date accreditationOneStartDate;
	private Date accreditationOneEndDate;
	private Date accreditationTwoStartDate;
	private Date accreditationTwoEndDate;
	private Date publicDebateStartDate;
	private Date publicDebateEndDate;
	private Date commonDabateStartDate;
	private Date commonDabateEndDate;

	// Constructors

	/** default constructor */
	public GraduationSchedule() {
	}

	/** full constructor */
	public GraduationSchedule(Major major, String graduationGrade,
			Date paperTitleDate, Date doubleChooseStartDate,
			Date doubleFirstChooseEndDate, Date doubleChooseEndDate,
			Date choosePapetTitleDate, Date taskBookStartDate,
			Date taskBookEndDate, Date midCheckDate,
			Date accreditationOneStartDate, Date accreditationOneEndDate,
			Date accreditationTwoStartDate, Date accreditationTwoEndDate,
			Date publicDebateStartDate, Date publicDebateEndDate,
			Date commonDabateStartDate, Date commonDabateEndDate) {
		this.major = major;
		this.graduationGrade = graduationGrade;
		this.paperTitleDate = paperTitleDate;
		this.doubleChooseStartDate = doubleChooseStartDate;
		this.doubleFirstChooseEndDate = doubleFirstChooseEndDate;
		this.doubleChooseEndDate = doubleChooseEndDate;
		this.choosePapetTitleDate = choosePapetTitleDate;
		this.taskBookStartDate = taskBookStartDate;
		this.taskBookEndDate = taskBookEndDate;
		this.midCheckDate = midCheckDate;
		this.accreditationOneStartDate = accreditationOneStartDate;
		this.accreditationOneEndDate = accreditationOneEndDate;
		this.accreditationTwoStartDate = accreditationTwoStartDate;
		this.accreditationTwoEndDate = accreditationTwoEndDate;
		this.publicDebateStartDate = publicDebateStartDate;
		this.publicDebateEndDate = publicDebateEndDate;
		this.commonDabateStartDate = commonDabateStartDate;
		this.commonDabateEndDate = commonDabateEndDate;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "Graduation_schedule_id", unique = true, nullable = false)
	public Integer getGraduationScheduleId() {
		return this.graduationScheduleId;
	}

	public void setGraduationScheduleId(Integer graduationScheduleId) {
		this.graduationScheduleId = graduationScheduleId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Major_id")
	public Major getMajor() {
		return this.major;
	}

	public void setMajor(Major major) {
		this.major = major;
	}

	@Column(name = "Graduation_grade", length = 4)
	public String getGraduationGrade() {
		return this.graduationGrade;
	}

	public void setGraduationGrade(String graduationGrade) {
		this.graduationGrade = graduationGrade;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Paper_title_date", length = 10)
	public Date getPaperTitleDate() {
		return this.paperTitleDate;
	}

	public void setPaperTitleDate(Date paperTitleDate) {
		this.paperTitleDate = paperTitleDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "double_choose_start_date", length = 10)
	public Date getDoubleChooseStartDate() {
		return this.doubleChooseStartDate;
	}

	public void setDoubleChooseStartDate(Date doubleChooseStartDate) {
		this.doubleChooseStartDate = doubleChooseStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "double_first_choose_end_date", length = 10)
	public Date getDoubleFirstChooseEndDate() {
		return this.doubleFirstChooseEndDate;
	}

	public void setDoubleFirstChooseEndDate(Date doubleFirstChooseEndDate) {
		this.doubleFirstChooseEndDate = doubleFirstChooseEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "double_choose_end_date", length = 10)
	public Date getDoubleChooseEndDate() {
		return this.doubleChooseEndDate;
	}

	public void setDoubleChooseEndDate(Date doubleChooseEndDate) {
		this.doubleChooseEndDate = doubleChooseEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Choose_papet_title_date", length = 10)
	public Date getChoosePapetTitleDate() {
		return this.choosePapetTitleDate;
	}

	public void setChoosePapetTitleDate(Date choosePapetTitleDate) {
		this.choosePapetTitleDate = choosePapetTitleDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Task_book_start_date", length = 10)
	public Date getTaskBookStartDate() {
		return this.taskBookStartDate;
	}

	public void setTaskBookStartDate(Date taskBookStartDate) {
		this.taskBookStartDate = taskBookStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Task_book_end_date", length = 10)
	public Date getTaskBookEndDate() {
		return this.taskBookEndDate;
	}

	public void setTaskBookEndDate(Date taskBookEndDate) {
		this.taskBookEndDate = taskBookEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Mid_check_date", length = 10)
	public Date getMidCheckDate() {
		return this.midCheckDate;
	}

	public void setMidCheckDate(Date midCheckDate) {
		this.midCheckDate = midCheckDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Accreditation_one_start_date", length = 10)
	public Date getAccreditationOneStartDate() {
		return this.accreditationOneStartDate;
	}

	public void setAccreditationOneStartDate(Date accreditationOneStartDate) {
		this.accreditationOneStartDate = accreditationOneStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Accreditation_one_end_date", length = 10)
	public Date getAccreditationOneEndDate() {
		return this.accreditationOneEndDate;
	}

	public void setAccreditationOneEndDate(Date accreditationOneEndDate) {
		this.accreditationOneEndDate = accreditationOneEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Accreditation_two_start_date", length = 10)
	public Date getAccreditationTwoStartDate() {
		return this.accreditationTwoStartDate;
	}

	public void setAccreditationTwoStartDate(Date accreditationTwoStartDate) {
		this.accreditationTwoStartDate = accreditationTwoStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Accreditation_two_end_date", length = 10)
	public Date getAccreditationTwoEndDate() {
		return this.accreditationTwoEndDate;
	}

	public void setAccreditationTwoEndDate(Date accreditationTwoEndDate) {
		this.accreditationTwoEndDate = accreditationTwoEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Public_debate_Start_date", length = 10)
	public Date getPublicDebateStartDate() {
		return this.publicDebateStartDate;
	}

	public void setPublicDebateStartDate(Date publicDebateStartDate) {
		this.publicDebateStartDate = publicDebateStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Public_debate_end_date", length = 10)
	public Date getPublicDebateEndDate() {
		return this.publicDebateEndDate;
	}

	public void setPublicDebateEndDate(Date publicDebateEndDate) {
		this.publicDebateEndDate = publicDebateEndDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Common_dabate_start_date", length = 10)
	public Date getCommonDabateStartDate() {
		return this.commonDabateStartDate;
	}

	public void setCommonDabateStartDate(Date commonDabateStartDate) {
		this.commonDabateStartDate = commonDabateStartDate;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Common_dabate_end_date", length = 10)
	public Date getCommonDabateEndDate() {
		return this.commonDabateEndDate;
	}

	public void setCommonDabateEndDate(Date commonDabateEndDate) {
		this.commonDabateEndDate = commonDabateEndDate;
	}

}